package org.yuanqiframework.yuanqi.core.utils;

import java.util.Base64;

/**
 * Base64编解码工具类
 *
 * @Author 曹波涛
 * @Date 2022/10/31 9:38
 * @Version 1.0
 */
public class Base64Utils {

    /**
     * Base64编码
     *
     * @param data 待编码的数据
     * @return 编码后的字符串
     */
    public static String encode(byte[] data) {
        return Base64.getEncoder().encodeToString(data);
    }

    /**
     * Base64编码
     *
     * @param data 待编码的字符串
     * @return 编码后的字符串
     */
    public static String encode(String data) {
        return Base64.getEncoder().encodeToString(data.getBytes());
    }

    /**
     * Base64解码
     *
     * @param data 待解码的字符串
     * @return 解码后的字节数组
     */
    public static byte[] decode(String data) {
        return Base64.getDecoder().decode(data);
    }

    /**
     * Base64解码
     *
     * @param data 待解码的字符串
     * @return 解码后的字符串
     */
    public static String decodeToStr(String data) {
        return new String(Base64.getDecoder().decode(data));
    }

    /**
     * URL安全的Base64编码
     *
     * @param data 待编码的数据
     * @return 编码后的字符串
     */
    public static String encodeUrlSafe(byte[] data) {
        return Base64.getUrlEncoder().encodeToString(data);
    }

    /**
     * URL安全的Base64编码
     *
     * @param data 待编码的字符串
     * @return 编码后的字符串
     */
    public static String encodeUrlSafe(String data) {
        return Base64.getUrlEncoder().encodeToString(data.getBytes());
    }

    /**
     * URL安全的Base64解码
     *
     * @param data 待解码的字符串
     * @return 解码后的字节数组
     */
    public static byte[] decodeUrlSafe(String data) {
        return Base64.getUrlDecoder().decode(data);
    }

    /**
     * URL安全的Base64解码
     *
     * @param data 待解码的字符串
     * @return 解码后的字符串
     */
    public static String decodeUrlSafeToStr(String data) {
        return new String(Base64.getUrlDecoder().decode(data));
    }
}
